Fix byte-to-long bitmap conversions.
authorkaf24@localhost.localdomain <kaf24@localhost.localdomain>
Sun, 21 Jan 2007 17:10:58 +0000 (17:10 +0000)
committerkaf24@localhost.localdomain <kaf24@localhost.localdomain>
Sun, 21 Jan 2007 17:10:58 +0000 (17:10 +0000)
Signed-off-by: Keir Fraser <keir@xensource.com>
tools/libxc/xc_private.c
xen/common/bitmap.c

index db3715989a14b042dc073215acc21ec615184e8f..df494d11437b8b9d6651de31c6a55671a0b020a9 100644 (file)
@@ -525,8 +525,7 @@ void bitmap_byte_to_64(uint64_t *lp, const uint8_t *bp, int nbits)
     for (i = 0, b = 0; nbits > 0; i++, b += sizeof(l)) {
         l = 0;
         for (j = 0; (j < sizeof(l)) && (nbits > 0); j++) {
-            l <<= 8;
-            l |= bp[b+j];
+            l |= (uint64_t)bp[b+j] << (j*8);
             nbits -= 8;
         }
         lp[i] = l;
index 76f55d29e8b4d16c9b9a81f243841fd0089065a8..363572bedb320b667f29d1197c4735947f672ae4 100644 (file)
@@ -494,8 +494,7 @@ void bitmap_byte_to_long(unsigned long *lp, const uint8_t *bp, int nbits)
        for (i = 0, b = 0; nbits > 0; i++, b += sizeof(l)) {
                l = 0;
                for (j = 0; (j < sizeof(l)) && (nbits > 0); j++) {
-                       l <<= 8;
-                       l |= bp[b+j];
+                       l |= (unsigned long)bp[b+j] << (j*8);
                        nbits -= 8;
                }
                lp[i] = l;